package com.lzh.runke.core.web_base.autoconfigure;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @author LiuZiHao
 * @date 创建时间:2023年03月22日 13:51:33
 * 解释：
 * @ConfigurationProperties： 1.和 @value注解一样用于获取配置文件中的属性并绑定到javaBean或属性中
 * 适用于所有具有相同前缀的分层属性，用于将配置文件中  WebAutoConfigProperties.WEB_BASE_PREFIX 开头的属性绑定到POJO中，
 * 2.@Configuration 可以替换为 @Component , @Service 等其他注解
 *  注：
 *  2.1springboot2.2之后，Spring通过类路径扫描查找并注册@ConfigurationProperties类。因此，不需要使用@Configuration等注解声明该类是一个组件了
 *  甚至也不需要@EnableConfigurationProperties
 *  2.2只需要在主类上添加该注解 @ConfigurationPropertiesScan("com.lzh.runke.common.autoconfigure") 即可扫描到配置
 * 3.Spring 使用宽松的规则来绑定属性，如:
 * test.hostName
 * test.hostname
 * test.host_name
 * test.host-name
 * test.HOST_NAME
 * 都可以绑定到属性hostName
 * 4.如果没有加@Configuration注解，需要在主类中添加@EnableConfigurationProperties注解来将属性绑定到POJO中
 */
@Getter
@Setter
//@Configuration
@ConfigurationProperties(prefix = WebAutoConfigProperties.WEB_BASE_PREFIX)
public class WebAutoConfigProperties {

    public static final String WEB_BASE_PREFIX = "rkinf.web";

    /**
     * Excel 模板路径
     */
    private String excelTemplatePath = "classpath:template/view/excel/";

    /**
     * 是否允许跨域，前后端分离部署时需为true（nginx代理时设置为false，在nginx配置跨域）
     */
    private boolean corsEnabled = true;

    /**
     * API 公共路径, default to /
     * 仅 @RestController 生效
     */
    private String pathApi = "/";

    /**
     * hibernate validator 开启快速校验
     */
    private boolean validatorFailFast = true;

    /**
     * 用于测试
     */
    private String hostName;

    public void setHostName(String hostName) {
        System.out.println("hostName = " + hostName);
        this.hostName = hostName;
    }
}
